Memory power management and data consolidation

ABSTRACT

According to embodiments of the disclosure, methods, systems and computer program products for memory power management and data consolidation are disclosed. The method may include selecting a first real memory portion and a second real memory portion from a plurality of real memory portions coupled to a memory controller in a computer system by a memory bus. The first real memory portion may be connected to a first buffer and the second real memory portion may be connected to a second buffer. The first and second real memory portions may be selected by the memory controller. The method may include migrating data from the first real memory portion to the second real memory portion on a migration bus through the first and second buffers. The method may also include placing the first real memory portion into a reduced power mode.

BACKGROUND

The present disclosure relates to memory management, more particularaspects relate to memory data management and data consolidation. Asmemory technology has advanced, resources requirements, such as powerconsumption, to computer systems have increased. Memory may have datadispersed across several memory modules which may result in powerconsumption inefficiencies. Thus, it may be advantageous to effectivelymanage data in order to increase power consumption efficiency and reducecomputer resource requirements.

SUMMARY

According to embodiments of the present disclosure, a method of memorypower management may include selecting a first real memory portion and asecond real memory portion from a plurality of real memory portionscoupled to a memory controller in a computer system by a memory bus. Theplurality of real memory portions each may have a dedicated buffer, thefirst real memory portion may be connected to a first buffer and thesecond real memory portion may be connected to a second buffer. Thefirst and second real memory portions may be selected by the memorycontroller. The method may include migrating data from the first realmemory portion to the second real memory portion on a migration busthrough the first and second buffers. The migration bus may connect eachof the dedicated buffers. The method may also include placing the firstreal memory portion into a reduced power mode. The data may be migratedand the first real memory portion may be placed into the reduced powermode by a data management controller included within at least one of thededicated buffers. The migration bus may connect each of the dedicatedbuffers in a daisy chain.

The method may further include updating, in a hardware controller, aphysical address of the data from the first real memory portion to thesecond real memory portion. The hardware controller may include ahypervisor. The method may further include selecting a third real memoryportion from the plurality of real memory portions coupled to a memorycontroller in a computer system. The third real memory portion may beconnected to a third buffer and the second real memory portion connectedto a second buffer, the first, second, and third real memory portionsmay be selected by the memory controller. The method may includemigrating data from the first real memory portion to at least the secondand third real memory portions on the migration bus through the first,second and third buffers.

The memory controller may select the first and second real memoryportions in response to a migration trigger. The migration trigger mayinclude determining that the first real memory stores data having a datasize less than an available capacity of the second real memory portion.The migration trigger may include determining that a quantity value forthe data in the first real memory portion is below a transfer threshold.The migration trigger may include determining that the second realmemory portion has an available capacity to receive the data from thefirst real memory portion. The migration trigger may include determiningthat a first power consumption value for the first real memory isgreater than a second power consumption value for the second real memoryportion.

A system for memory power management may include a plurality of realmemory portions including a first real memory portion and a second realmemory portion, each of the plurality of real memory portions having adedicated buffer including a first buffer connected to the first realmemory portion and a second buffer connected to the second real memoryportion. The system may include a migration bus, the migration busconnecting each of the dedicated buffers. The system may also include adata management controller, within at least one of the dedicatedbuffers. The data management controller may be configured to migratedata, from the first real memory portion to the second real memoryportion across the migration bus through the first and second buffers.The data management controller may also be configured to place the firstreal memory portion into a reduced power mode.

The system may also include a memory controller, the plurality of realmemory portions coupled to the memory controller by a memory bus. Thememory controller may be configured to select the first and second realmemory portions. The data management controller may be configured tomigrate data from the selected first real memory portion to the selectedsecond real memory portion. The migration bus may connect each of thededicated buffers in a daisy chain. The plurality of real memoryportions may include a third real memory portion connected to a thirdbuffer. The data management controller may be configured to migratedata, from the first real memory portion to at least the second andthird real memory portions across the migration bus through the first,second, and third buffers.

The system may further include a hardware controller. The hardwarecontroller may include a physical address of the data, the datamanagement controller further configured to update the physical addressof the data from the first real memory portion to the second real memoryportion. The hardware controller may include a hypervisor. The memorycontroller may be further configured to select the first and second realmemory portions in response to a migration trigger. The migrationtrigger may include determining that the first real memory stores datahaving a data size less than an available capacity of the second realmemory portion. The migration trigger may include determining that thedata in the first real memory portion is below a transfer threshold. Themigration trigger may include determining that the second real memoryportion has an available capacity to receive the data from the firstreal memory portion. The migration trigger may include determining thata first power consumption value for the first real memory is greaterthan a second power consumption value for the second real memoryportion.

A computer program product for memory power management, the computerprogram product comprising a computer readable storage medium havingprogram instructions embodied therewith, the program instructionsexecutable by a computer to cause the computer to perform a method mayinclude selecting a first real memory portion and a second real memoryportion from a plurality of real memory portions coupled to a memorycontroller in a computer system by a memory bus. The plurality of realmemory portions may each having a dedicated buffer, the first realmemory portion may be connected to a first buffer and the second realmemory portion may be connected to a second buffer, the first and secondreal memory portions selected by the memory controller. The computerprogram product may include migrating data from the first real memoryportion to the second real memory portion on a migration bus through thefirst and second buffers, the migration bus connecting each of thededicated buffers. The computer program product may include placing thefirst real memory portion into a reduced power mode. The data may bemigrated and the first real memory portion may be placed into thereduced power mode by a data management controller included within atleast one of the dedicated buffers.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 depicts a computer system for memory power management accordingto an embodiment.

FIG. 2 depicts a memory subsystem for memory power management accordingto an embodiment.

FIG. 3A depicts a virtual memory having pages. The pages are mapped tolocations in real memory.

FIG. 3B depicts movement of pages from some real memory portions toother real memory portions.

FIG. 3C depicts the allocation of pages in real memory portions afterthe movement illustrated in FIG. 3B, with empty real memory portionsplaced in reduced power down mode.

FIG. 4 depicts a flowchart of a method of memory power managementaccording to an embodiment.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to memory management, moreparticular aspects relate to memory data management and dataconsolidation. While the present disclosure is not necessarily limitedto such applications, various aspects of the disclosure may beappreciated through a discussion of various examples using this context.

While the same nomenclature and same numbers may be used to identifyelements throughout the disclosure, this practice is not intended tolimit the scope of the disclosure. Identified elements in one figure maynot be identical to other same named or identified elements in otherfigures.

As memory capacity has increased and advancements have occurred inmemory technology, memory power requirements have increased. A computersystem including a plurality of volatile real memory portions may have arange of power consumption which depends upon the number of active realmemory portions within the system. Generally, power supplies supplyingpower to memory are configured to supply a quantity of power whichaccounts for the upper limit of the range of memory power consumption.This allows the computer system to provide for broader operatingconditions. However, this may lead to less efficient utilization ofenergy. Data may be allocated spread out among multiple memory portions.Rather than spreading the data out, in some instances that data may beconsolidated within fewer portions and portions containing no data mayhave power reduced.

Memory power consumption in a computing system may be reduced by variousmethods. One method may include transferring data, from a real memoryportion within a plurality of real memory portions to one or more otherreal memory portions within the plurality of real memory portions sothat the total number of real memory portions containing data isdecreased. Memory portions may include any portion of volatile realmemory. For example a real memory portion, may be a single rank ofmemory. In an embodiment, the single rank of memory may have a capacityof 2 gigabytes (GB). However, the size of the real memory portion is notlimited, and may include one or more ranks, modules, or other units ofmemory. This process of transferring data to decrease total real memoryportions having data may be referred to herein as memory consolidation.

Real memory portions containing no pages of data (empty real memoryportions) may be placed in a reduced power mode, thereby reducing powerconsumption by the computer system. Reduced power mode may beimplemented in various types of volatile real memory, such as a DRAM.When volatile real memory is placed in reduced power mode, powerconsumption may be decreased by turning off real memory portions. In anembodiment, reduced power mode may control volatile real memory powerconsumption at rank level. For example, if all pages in a rank are notused, that rank may be turned off. Volatile real memory may includemultiple ranks of memory. Each rank may have a capacity which may allowthe rank to store one or more pages. Each page may hold one or morelogical memory blocks.

In some embodiments, reduced power mode reduces power consumption tozero and the data stored in volatile real memory may be lost. The termreduced power mode is used herein to denote any mode in any memory(e.g., DRAM, SRAM, or other volatile memory devices) that may cause areduction of power and may cause loss of data. DRAM memory is used forillustrative purposes, but the disclosure is not limited to DRAM memory.The computing system then may continue to operate with the empty realmemory portions in reduced power mode.

Memory consolidation however may affect mainline memory operation andslow system performance during the memory consolidation process. Anapproach therefore may be advantageous which increases the efficiency ofmemory consolidation in the interest of providing improved energyconservation.

A system for memory power management may include a plurality of realmemory portions coupled to a memory controller by a memory bus. Theplurality of real memory portions may include a first real memoryportion and a second real memory portion. Each of the plurality of realmemory portions may have a dedicated buffer including a first bufferconnected to the first real memory portion and a second buffer connectedto the second real memory portion. The memory controller may beconfigured to select the first and second real memory portions. Thesystem may also include a migration bus, the migration bus connectingeach of the dedicated buffers, and a data management controller, withinat least one of the dedicated buffers. The data management controllermay be configured to migrate data, from the first real memory portion tothe second real memory portion across the migration bus through thefirst and second buffers, and place the first real memory portion into areduced power mode.

Referring now to FIG. 1, a computer system 100 according to anembodiment may be seen. The computer system may include a plurality ofreal memory portions 102. The plurality of real memory portions 102 mayeach have a dedicated buffer 104. The plurality real memory portions 102may be connected, via a memory bus 106, to a memory controller 108. Thededicated buffers 104 may be connected together by a migration bus 110.A hardware controller 112 may be connected to the memory controller 108.

The plurality of real memory portions may provide the computer system100 with volatile real memory. The plurality of real memory portions 102may be constructed as cards containing one or more memory chips (e.g.,DRAM chips), or DIMMs (dual inline memory modules), or other suitableunit of memory. In an embodiment, the plurality of real memory portionsmay be a plurality of memory ranks. In FIG. 1, an embodiment may be seenwhere the plurality of real memory portions 102 are constructed asDIMMs, however other types of suitable memory may be used in lieu ofDIMMs. Various amounts of memory in the memory portions may be used. Inan embodiment, a computer system 100 might have a plurality of realmemory portions 102 made up of eight 2 GB DIMMs.

The plurality of real memory portions 102 may provide a physicallocation for data, or pages, to be stored in the computer system 100. Apage (memory page or virtual page) may be a contiguous block of virtualmemory that is used in memory allocation performed by the memorycontroller for an application or program. The plurality of real memoryportions 102 may contain various kinds of data such as an operatingsystem, memory data, a power control program, or other data. Memory datamay be information regarding the plurality of real memory portions 102.For example, memory data, in various embodiments, may contain capacityinformation of each real memory portion, power consumption informationof each real memory portion, and a value for a transfer threshold.Memory data may be used by the memory controller to select first andsecond real memory portions for memory consolidation, described furtherbelow.

Dedicated buffers 104 may be connected to each of the plurality ofmemory portions 102. The dedicated buffers 104 may provide variousfunctions including providing a region of a physical storage used totemporarily store data while it is transmitted to and from the pluralityof memory portions 102, verifying channel connectivity, synchronizingmemory modules, detecting errors, providing logic for the plurality ofreal memory portions, and other functions. The dedicated buffers 104 maybe implemented in a fixed memory location in hardware. In an embodiment,the dedicated buffers 104 may be a DIMM controller chip on a DIMM modulewith one or more of the plurality of real memory portions 102. At leastone data management controller, described further below, may be includedwithin the dedicated buffers 104. The data management controller maycontain logic to control memory transfer between the plurality of memoryportions 102 across the migration bus 110.

The memory controller 108 may perform various functions within thecomputer system 100. For example, the memory controller 108 may performfetch and store operations. The memory controller 108 may be coupled tothe plurality of real memory portions 102 by a memory bus 106. Thememory controller 108 may contain and execute logic or instructions. Inan embodiment, the memory controller 108 may be configured to select afirst real memory portion and a second real memory portion from theplurality of real memory portions 102 for memory consolidation. Thememory controller 108 may select the first and second real memoryportions based on a migration trigger. In an embodiment, A third realmemory portion or more portions from the plurality of real memoryportions 102 may also be selected by the memory controller 108 forconsolidation of data.

The migration trigger may be one or more conditions which may bedetected by the memory controller 108. The one or more conditions mayinvolve status of the plurality of real memory portions 102 such asavailable capacity of the real memory portions, power consumption data,or other information. The migration trigger may be one or moreconditions which identify when a real memory portion is preferred formemory consolidation. In an embodiment, the memory controller 108 mayselect a first and second real memory portion in response to detectingthe migration trigger in both the first and second real memory portions.The memory controller 108 may detect the migration trigger based on realtime conditions.

The migration bus 110 may allow for data, or pages, to be transferredbetween the plurality of memory portions 102 through the dedicatedbuffers 104. The migration bus 110, may connect each of the dedicatedbuffers 104. The migration bus is distinct from the memory bus 106, andmay allow for a dedicated path for data transfer when consolidatingmemory between the plurality of memory portions 102. The migration busmay allow for normal levels of traffic on the memory bus 106, which mayreduce memory latency and improve computer system 100 performance whileperforming memory consolidation. The migration bus 110 may beconstructed as various types of buses, including parallel bus, serialbus, or other type of bus. The migration bus may allow for peer to peertransfer of data, master/slave transfer of data, or other type ofconnection. In an embodiment, the migration bus is configured as a daisychain connecting each of the dedicated buffers 104.

The hardware controller 112 may perform various functions within thecomputer system 100. This may include keeping track of where pages ofmemory are stored in real memory. The hardware controller may beimplemented in various forms including as a hypervisor which may operatea virtual machine which performs control functions regarding theplurality of memory portions, as a BIOS (Basic Input/Output System), orother suitable hardware controller. The hardware controller may also beimplemented as hardware, software, or a combination of the two. In anembodiment the hypervisor may be a firmware component which managesoverall system resources. In an embodiment the hypervisor may managerequests for memory allocation and de-allocation from operatingsystem(s) running on one or more logical partitions.

FIG. 1 depicts a representative of certain major components of thecomputer system 100. Individual components, however, may have additionaldetail not represented in FIG. 1 for ease of understanding and notnecessary to understand the embodiment shown. Components other than orin addition to those shown in FIG. 1 may be present, and the number,type, and configuration of such components may vary. Several particularexamples of additional detail or additional variations are disclosedherein. These examples are by way of example only and are notnecessarily the only such variations. The various program componentsillustrated in FIG. 1 may be implemented, in various embodiments, in anumber of different manners, including using various computerapplications, routines, components, programs, objects, modules, datastructures, etc., which may be referred to herein as software, computerprograms, or simply programs.

FIG. 2 shows a view of a memory subsystem 200 according to anembodiment. The memory subsystem 200 may be a detailed view of a largercomputer system with elements of the computer system omitted for claritywhich are not required to explain the embodiment shown. The memorysubsystem 200 may have real memory portions including a first realmemory portion 202 and a second real memory portion 204. The subsystem200 may include dedicated buffers including a first buffer 206 connectedto the first real memory portion 202, and a second buffer 208 connectedto the second real memory portion 204. The first buffer 206 and thesecond buffer 208 may each have a data management controller 210included within. A migration bus 110 may connect the first and secondbuffers. In an embodiment, the memory subsystem 200 may be may beconstructed as cards containing one or more memory chips (e.g., DRAMchips), or DIMMs (dual inline memory modules), or other suitable unit ofmemory which contains the elements of the memory subsystem 200.

The first real memory portion 202 and the second real memory portion 204may be the same or substantially similar as the plurality of real memoryportions described above. The first and second real memory portions,202, 204 may be connected to a memory bus 106. The first and second realmemory portions 202, 204, may provide volatile real memory to a computersystem. The first and second real memory portions 202, 204 may beconstructed as cards containing one or more memory chips (e.g., DRAMchips), or DIMMs (dual inline memory modules), or other suitable unit ofmemory. In an embodiment, the first and second real memory portion 202,204, may each be a rank of memory. The first and second portions mayhave varying amounts of memory. In an embodiment, the first real memoryportion 202 and the second real memory portion 204 each have a capacityof 2 GB.

The first buffer 206 and the second buffer 208 may be the same orsubstantially similar as the dedicated buffers described above. Thefirst and second buffers 206, 208 may be connected to the first portion202 and the second portion 204. The first and second buffers 206, 208may provide various functions including providing a region of a physicalstorage used to temporarily store data while it is transmitted to andfrom the first and second portions 202, 204, verifying channelconnectivity, synchronizing memory modules, detecting errors, providinglogic for the first and second portions 202, 204, and other functions.The first and second buffers 206, 208, may be implemented in a fixedmemory location in hardware. In an embodiment, the first and secondbuffers 206, 208, may be a DIMM controller chip on a DIMM module with atleast one of the first and second portions 206, 208. At least one datamanagement controller 210, described further below, may be includedwithin the first and second buffers 206, 208. The data managementcontroller 210 may contain logic to control memory transfer between thefirst and second portions 202, 204 across the migration bus 110.

The migration bus 110, may connect the first and second buffers 206,208. The migration bus may allow for data, or pages, to be transferredbetween the first and second real memory portions 202, 204 through thefirst and second buffers 206, 208, and for memory to be consolidatedwithin the memory subsystem 200. The migration bus is distinct from thememory bus 106, and may allow for a dedicated path for data transferwhen consolidating memory between the first and second real memoryportions 202, 204. The migration bus 110 may reduce traffic on thememory bus 106, which may reduce latency and improve performance whileperforming memory consolidation. The migration bus 110 may beconstructed as various types of buses, including parallel bus, serialbus, or other type of bus. The migration bus 110 may allow for peer topeer transfer of data, master/slave transfer of data, or other type ofconnection. In an embodiment, the migration bus 110 is configured as adaisy chain connecting each of the dedicated buffers 104.

The data management controller 210 may contain logic to control memorytransfer between the first and second real memory portions 202, 204,across the migration bus 110. The data management controller may bepositioned within at least one of the first and second buffers 206, 208.The data management controller 210 may be configured to migrate databetween real memory portions. For example, the data managementcontroller 210 may migrate data from the first real memory portion 202to the second real memory portion 204 across the migration bus 110through the first and second buffers 206, 208. After the data ismigrated, the data management controller 210 may place the first realmemory portion into a reduced power mode. The reduced power mode mayclear the first memory and memory consolidation may be complete betweenthe first and second real memory portions.

The data management controller 210 may be configured to control themigration process and may include logic which controls the method ofmigration. In an embodiment, the data is migrated from the first realmemory portion 202 to the second real memory portion 204 by writing thedata to the second real memory portion, and clearing the first realmemory portion, in response to determining that the data was written tothe second real memory portion, by placing the first real memory portionin reduced power mode.

FIG. 3 shows an illustrative mapping of pages in a virtual memory 302 topages in a real memory 304. Programmers may typically deal with virtualmemory, and may not require details of where data is physically storedin real memory. For example, a user's view of memory might be asaddressed by a 32 bit virtual address, and therefore, the user sees 4 GB(gigabytes) of continuous addressing space in memory, wherein the usercan address any byte in that address space. The user may typically haveno idea of where a particular byte is physically stored in the computingsystem. However, a hardware controller, such as a hypervisor or othersuitable controller, may partition the virtual address space into pages.Virtual memory 302 is shown to have “N” pages (i.e., page-0 throughpage-N−1). Real memory 304 is shown to have real memory portions 304A,304B, 304C, 304D, and 304E. Each real memory portion is shown having acapacity of 128 MB (megabytes), however real memory portions are notlimited to any particular size and 128 MB is used as an example only.

When an application requires storage, the hardware controller 112(FIG. 1) may allocate one or more pages of virtual memory (memory in avirtual page accessed by a “virtual address”) to the application anddetermine where in real memory 304 the page or pages are to be stored(allocated). The physical location of the pages may then be accessed bya “physical address”. The hardware controller may keep a cross-referencebetween each page in virtual memory 302 that has been allocated and thelocation in real memory 304 where the page is kept. In other words, whendata is to be accessed, the hardware controller may map the virtualaddress to a physical address to store/fetch the data.

In the example of FIG. 3A, page-0, page-1, and page-2 in virtual memoryare stored in real memory portion 304A. Real memory portion 304A, asexplained further below, in various implementations can be a DIMM, amemory card, or other physical piece of memory designated by thedesigner as a real memory portion. Page-3 is stored in real memoryportion 304B. Page-120 is stored in real memory portion 304C. Page-370and page-371 are stored in real memory portion 304D. Page-N−1 is storedin real memory portion 304E. Arrows between virtual memory 302 and realmemory 304 indicate the cross-reference maintained by the hardwarecontroller.

Note that, for most users, the physical location in real memory 320 maynot be of concern, and such users may rely on the memory controller tohandle the details of mapping addresses of virtual memory 302 tophysical addresses to access data in real memory 304. For these users,the hardware controller 112 (FIG. 1) may be free to move pages in realmemory 304 from a first physical location to a second physical location,including to different real memory portions.

FIG. 3A illustrates how real memory portions may become sparselypopulated, that is, have fewer pages allocated to them than they arecapable of storing. In an embodiment, the pages in virtual memory mayeach represent a segment of data of having a size of 4 KB (kilobytes).In FIG. 1 the portions of real memory 304 may each have a capacity of128 MB. In FIG. 3A, page-0, page-1, and page-2 in virtual memory arestored in real memory portion 304A. Real memory portion 304A, asexplained further below, in various implementations can be a DIMM, amemory card, or other physical piece of memory designated by thedesigner as a real memory portion. Page-3 is stored in real memoryportion 304B. Page-120 is stored in real memory portion 304C. Page-370and page-371 are stored in real memory portion 304D. Page-N−1 is storedin real memory portion 304E. Thus, the real memory portions 304 may besparsely populated and the fewer real memory portions may be used if thepages are consolidated in real memory 304.

FIG. 3B illustrates how real memory portions 304B, 304C, and 304E can beemptied by the hardware controller 112 (FIG. 1). Page-3 is moved fromreal memory portion 304B to real memory portion 304A. The memorycontroller may modify its cross-reference (often called a translationtable) accordingly. Page-120 is similarly moved from real memory portion304C to real memory portion 304A. Page-N−1 is moved from real memoryportion 204E to real memory portion 304D. The solid arrows from virtualmemory 302 to real memory 304 indicate the cross-reference aftermovement of pages; the dashed arrows indicate the cross-reference priorto movement of pages. The bold arrows within real memory 304 indicatethe movement of pages.

FIG. 3C illustrates allocated pages in real memory 302 following themoves described relative to FIG. 3B. Empty real memory portions 304B,304C, and 304E contain no data needed by the computing system, and areplaced in a reduced power mode, thereby reducing power consumption.

FIG. 4 shows a high level flowchart of a method 400 that implements anembodiment of the memory power management system. In operation 402,pages of virtual memory may be allocated to a plurality of real memoryportions. Cross-references of the locations in real memory portionsallocated to the pages of virtual memory may also be created and storedin a memory controller. However, different computing systems use variousmethods of cross-referencing virtual pages to the locations in realmemory portions and other suitable methods of cross-referencing orlocations for storing cross-referencing locations may be used. Once thepages of virtual memory are allocated, the method 400 may progress tooperation 403.

In decision block 403, it is determined whether a migration trigger hasoccurred. Migration triggers may be conditions which determine whether afirst real memory portion and a second real memory portion may havememory consolidated. If a migration trigger occurs, the method mayprogress to operation 406. The migration trigger may be selected asvarious conditions depending upon the preferences of a user. Themigration triggers may be based on memory data such as capacityinformation, power consumption, and a value for a transfer threshold.

In an embodiment, the migration trigger may include determining that thefirst real memory stores data of a size less than an available capacityof the second real memory portion. In another embodiment, the migrationtrigger may include determining that a quantity value for the data inthe first real memory portion is below a transfer threshold. A transferthreshold may be a number representing a quantity of pages allocated ina memory portion. The transfer threshold may designate which real memoryportions may be used for memory consolidation. A real memory portionhaving a number of allocated pages greater than the transfer thresholdmay not be considered a candidate for having pages moved from that realmemory portion. A transfer threshold value may be selected as anynumber, and may be selected according to the needs of a user of acomputer system. For example, if a particular real memory portion cancontain 32,000 pages, the designer (or administrator) may set, forexample, a value of 100 as the transfer threshold. If more than 100pages are allocated to the real memory portion, no effort will be madeto empty that particular real memory portion. Similarly, if 100 or lesspages are allocated to the particular real memory portion, the 100 orless pages can be moved to a different real memory portion to empty theparticular real memory portion.

The migration trigger may also include including determining that thesecond real memory portion has an available capacity to receive the datafrom the first real memory portion. The migration trigger may includedetermining that a first power consumption value for the first realmemory is greater than a second power consumption value for the secondreal memory portion. If the migration trigger does not occur, then thedecision block 404 may reset the method 400 back to operation 403 andwait until a migration condition is triggered.

In operation 404, first and second real memory portions may be selected.In an embodiment, the memory controller may be configured to select afirst real memory portion and a second real memory portion from aplurality of real memory portions. The first and second real memoryportions may be selected for consolidation of data. The first and secondreal memory portions may be selected based on a migration trigger,described further below, which may determine which real memory portionsare preferred for data consolidation. In an embodiment, A third realmemory portion or more portions may also be selected by the memorycontroller for consolidation of data from the first real memory portionto at least the second and third real memory portions.

In operation 406, the data may be migrated from the first real memoryportion to the second real memory portion. As described above the datamay be migrated across the migration bus across the first and secondbuffers. Operation 406 may initiate the consolidation process. As a partof the migration, in operation 408, writes may be allowed to the secondreal memory portion and reads may be allowed from the first memory. Themethod 400 may consolidate pages from the first real memory portion tothe second real memory portion. In an embodiment, the method 400 mayconsolidate pages from the first real memory portion to at least thesecond and third real memory portions. The data transfer may maintainthe physical location of the page in the first memory during the processof consolidation and read requests to the page may be directed to thephysical location in the first memory while the migration is inprogress.

If the migration has been completed then, in decision block 410, themethod may progress to 412. If the migration has not been completed,then decision block 410 may wait until it receives indication that themigration has been successfully completed. Once the migration has beencompleted and the page has been written to the second portion, inoperation 412, write and read commands may be stopped to the first realmemory portion and the first real memory portion may be placed in thereduced power mode. Placing the first real memory portion in the reducedpower mode may clear the first memory and reduce the power consumptionof the computer system.

After the consolidation of the page from the first real memory portionto the second real memory portion, in operation 414, a memory controllermay be updated to have a physical address of the data from the firstreal memory portion to the second real memory portion. And, in operation416, memory operations may be continued with the data's updated physicallocation in the second real memory portion. The method 400, may thenreset back to operation 403 and the method 400 may wait to select firstand second real memory portions which trigger a migration trigger indecision block 404.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the like,and conventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method of memory power management comprising:selecting a first real memory portion and a second real memory portionfrom a plurality of real memory portions coupled to a memory controllerin a computer system by a memory bus, wherein each of the plurality ofreal memory portions has a dedicated buffer and is a rank of memorylocated on a dual inline memory module (DIMM) that provides a physicallocation for data to be stored, the first real memory portion connectedto a first dedicated buffer and the second real memory portion connectedto a second dedicated buffer, the first and second real memory portionsselected by the memory controller, wherein each of the dedicated buffersis configured to verify channel connectivity, synchronize the DIMMs,detect errors, and provide logic for the first real memory portion andthe second real memory portion; migrating data from the first realmemory portion to the second real memory portion on a migration busthrough the first and second dedicated buffers, the migration busconnecting each of the dedicated buffers; and placing the first realmemory portion into a reduced power mode, the data being migrated andthe first real memory portion placed into the reduced power mode by adata management controller included within at least one of the dedicatedbuffers.
 2. The method of claim 1, wherein the migration bus connectseach of the dedicated buffers in a daisy chain.
 3. The method of claim1, further comprising updating, in a hardware controller, a physicaladdress of the data from the first real memory portion to the secondreal memory portion.
 4. The method of claim 3, wherein the hardwarecontroller includes a hypervisor.
 5. The method of claim 1, furthercomprising: selecting a third real memory portion from the plurality ofreal memory portions coupled to the memory controller in the computersystem by the memory bus, the third real memory portion connected to athird buffer, the first, second, and third real memory portions selectedby the memory controller; and migrating data from the first real memoryportion to at least the second and third real memory portions on themigration bus through the first, second and the third dedicated buffers,the migration bus connecting each of the dedicated buffers.
 6. Themethod of claim 1, wherein the memory controller selects the first andsecond real memory portions in response to a migration trigger, themigration trigger including determining that the first real memorystores data having a data size less than an available capacity of thesecond real memory portion.
 7. The method of claim 1, wherein the memorycontroller selects the first and second real memory portions in responseto a migration trigger, the migration trigger including determining thata quantity value for the data in the first real memory portion is belowa transfer threshold.
 8. The method of claim 1, wherein the memorycontroller selects the first and second real memory portions in responseto a migration trigger, the migration trigger including determining thatthe second real memory portion has an available capacity to receive thedata from the first real memory portion.
 9. The method of claim 1,wherein the memory controller selects the first and second real memoryportions in response to a migration trigger, the migration triggerincluding determining that a first power consumption value for the firstreal memory is greater than a second power consumption value for thesecond real memory portion.
 10. A computer program product for memorypower management, the computer program product comprising anon-transitory computer readable storage medium having programinstructions embodied therewith, the program instructions executable bya computer to cause the computer to perform a method comprising:selecting a first real memory portion and a second real memory portionfrom a plurality of real memory portions coupled to a memory controllerin a computer system by a memory bus, wherein each of the plurality ofreal memory portions has a dedicated buffer and is a rank of memorylocated on a dual inline memory module (DIMM) that provides a physicallocation for data to be stored, the first real memory portion connectedto a first dedicated buffer and the second real memory portion connectedto a second dedicated buffer, the first and second real memory portionsselected by the memory controller, wherein each of the dedicated buffersis configured to verify channel connectivity, synchronize the DIMMs,detect errors, and provide logic for the first real memory portion andthe second real memory portion; migrating data from the first realmemory portion to the second real memory portion on a migration busthrough the first and second dedicated buffers, the migration busconnecting each of the dedicated buffers; and placing the first realmemory portion into a reduced power mode, the data being migrated andthe first real memory portion placed into the reduced power mode by adata management controller included within at least one of the dedicatedbuffers.